#include <iostream>
#include <utility>
#include<vector>
#include<algorithm>
#define  PII  pair<int,int> 
#define x first
#define y second
using namespace std;
vector<PII> arr;

void merge(vector<PII> &segs)
{
    vector<PII> res;
  //创建临时的区间存储顺序表
    sort(segs.begin(), segs.end());//将原来数组的进行排序
    //pair默认是根据第一个关键字进行排序的

    int st = 0, ed = 0;//当前区间变量遍历出来的起始节点还有结束节点
    for (auto seg : segs)//遍历数组
        if (ed < seg.first)//如果当前的区间，和遍历区间没有交集的话就直接push
        {
            if (st != 0) res.push_back({st, ed});
            st = seg.first, ed = seg.second;//更新现在最后边的区间
        }
        else ed = max(ed, seg.second);//如果是有交集那么最后边的区间取最大的那个

    if (st != 0) res.push_back({st, ed});//进行到这一步

    segs = res;
}
int ask(int l,int r)
{
  int res = 0;
  for(auto i : arr)
  {
    if((i.x <=  l && i.y >= l) && (r < i.x || r > i.y) )
    {
      res++;
    }
  }
  return res;
}
int main()
{
  // 请在此输入您的代码

  int n,q;
  cin >> n >> q;
  for(int i = 0;i < n;i++)
  {
    int l,r;
    cin >> l >> r;
    arr.push_back({l,r});
  }
  merge(arr);
  for(int i = 0;i < q;i++)
  {
    int l,r;
    cin >> l >> r;
    cout << ask(l,r) << endl;
  }
  
  return 0;
}